/**
 * 限制结束日期大于开始日期
 * @param {*} endTime 选中的结束时间
 * @returns
 */
const startTimeLimit = (endTime) => {
  return {
    disabledDate: time => {
      const endDateVal = endTime
      if (endDateVal) {
        return time.getTime() > new Date(endDateVal).getTime()
      }
    }
  }
}

/**
 * 限制开始日期小于结束日期
 * @param {*} starTime 选中的开始时间
 * @returns
 */
const endTimeLimit = (starTime) => {
  return {
    disabledDate: time => {
      const beginDateVal = starTime
      if (beginDateVal) {
        return time.getTime() < new Date(beginDateVal).getTime()
      }
    }
  }
}

/**
 * 限制开始日期小于结束日期
 * @param {*} type 控制类型 start end
 * @param {*} t 选择的时间 // 注意: type=start对应的t参数是结束时间;type=end对应的t参数是开始时间
 * @returns
 */
const timeLimit = (type, t) => {
  if (type !== 'start' && type !== 'end') {
    throw new Error('timeLimit方法参数不正确')
  }
  return {
    disabledDate: time => {
      const val = t
      if (type === 'end') {
        if (val) {
          return time.getTime() < new Date(val).getTime()
        }
      } else {
        if (val) {
          return time.getTime() > new Date(val).getTime()
        }
      }
    }
  }
}


/**
 * 格林时间转字符串
 * @param {*} time 待转换时间
 * @returns 转换后的字符串时间
 */
const formatDateTime = (time) => {
  const getTime = new Date(time)
  const year = getTime.getFullYear()
  const month = getTime.getMonth() + 1
  const day = getTime.getDate()
  const hh = getTime.getHours()
  const mm = getTime.getMinutes()
  const ss = getTime.getSeconds()
  let resultTime = year + '-'
  if (month < 10) {
    resultTime += '0'
  }
  resultTime += month + '-'

  if (day < 10) {
    resultTime += '0'
  }
  resultTime += day + ' '

  if (hh < 10) {
    resultTime += '0'
  }
  resultTime += hh + ':'

  if (mm < 10) {
    resultTime += '0'
  }
  resultTime += mm + ':'

  if (ss < 10) {
    resultTime += '0'
  }
  resultTime += ss

  return resultTime
}

/**
 * 获取地址栏参数数据json格式
 * @param {*} url 待获取参数值的地址
 * @returns json格式地址栏参数 key，value值
 */
const getAllUrlParam = (url) => {
  const str = url.split('?')[1]
  const items = str.split('&')
  let arr = []
  const jsonData = {}
  for (let i = 0; i < items.length; i++) {
    arr = items[i].split('=')
    jsonData[arr[0]] = arr[1]
  }
  return jsonData
}

/**
 * 根据地址信息，获取跳转路由值
 * @param {*} url 地址信息
 * @returns path路由地址
 */
const getPathMess = (url) => {
  const pathStartIndex = url.indexOf('#')
  const pathEndIndex = url.indexOf('?')
  const toPath = url.slice(pathStartIndex, pathEndIndex)
  return toPath
}

// 上传文件组件默认不显示组件自带的列表
const hiddenList = false

//发送刷新待办消息到通用待办
const sendMessageToCommonTodo = () => {
  if (window.opener) {
    window.opener.postMessage({
      "action": "refreshTodoList"
    }, window.opener.location.href);
  }
  return true
}



export default {
  startTimeLimit,
  endTimeLimit,
  timeLimit,
  formatDateTime,
  getAllUrlParam,
  getPathMess,
  hiddenList,
  sendMessageToCommonTodo,
}
